package com.future;

/**
 * Description:
 * ���������汾�� version1 �� version2 ������Ƚ����ǡ�
 * <p>
 * �汾����һ�������޶�����ɣ����޶�����һ�� '.' ���ӡ�ÿ���޶����� ��λ���� ��ɣ����ܰ��� ǰ���� ��ÿ���汾�����ٰ���һ���ַ����޶��Ŵ����ұ�ţ��±�� 0 ��ʼ������ߵ��޶����±�Ϊ 0 ����һ���޶����±�Ϊ 1 ���Դ����ơ����磬2.5.33 �� 0.1 ������Ч�İ汾�š�
 * <p>
 * �Ƚϰ汾��ʱ���밴�����ҵ�˳�����αȽ����ǵ��޶��š��Ƚ��޶���ʱ��ֻ��Ƚ� �����κ�ǰ����������ֵ ��Ҳ����˵���޶��� 1 ���޶��� 001 ��� ������汾��û��ָ��ĳ���±괦���޶��ţ�����޶�����Ϊ 0 �����磬�汾 1.0 С�ڰ汾 1.1 ����Ϊ�����±�Ϊ 0 ���޶�����ͬ�����±�Ϊ 1 ���޶��ŷֱ�Ϊ 0 �� 1 ��0 < 1 ��
 * <p>
 * ���ع������£�
 * <p>
 * ���?version1?>?version2?����?1��
 * ���?version1?<?version2 ���� -1��
 * ����֮�ⷵ�� 0��
 * <p>
 * ��Դ�����ۣ�LeetCode��
 * ���ӣ�https://leetcode-cn.com/problems/compare-version-numbers
 * ����Ȩ������������С���ҵת������ϵ�ٷ���Ȩ������ҵת����ע��������
 *
 * @author weiruibai.vendor
 * Date: 2022/5/5 10:21
 */
public class Solution_165 {

    public static void main(String[] args) {
        System.out.println(Integer.parseInt("000111"));
        System.out.println(Integer.parseInt("000101"));

        String version1 = "1.01", version2 = "1.001";
        version1 = "1.0";
        version2 = "1.0.0";
        version1 = "1.0.0001.111.1";
        version2 = "1.0.1.111.1";
        System.out.println(compareVersion(version1, version2));
    }

    /**
     * ˼·��
     * 1������'.'�ָ���ַ�������
     * 2����ʱ�������ݸ�ʽֻ����0��1
     * 3��������ת������
     * 4���Ƚϴ�С
     * eg:"1.0.0001.111.1"
     * =>{"1","0","0001","111","1"}
     * Integer.parseInt("00001")=1
     * Integer.parseInt("01001")=1001
     * ....
     *
     * @param version1
     * @param version2
     * @return
     */
    public static int compareVersion(String version1, String version2) {
        if ((version1 == null && version2 == null) || (version1.length() == 0 || version2.length() == 0)) {
            return 0;
        }
        String[] strings1 = version1.split("\\.");
        String[] strings2 = version2.split("\\.");
        for (int i = 0; i < Math.max(strings1.length, strings2.length); i++) {
            int x = 0;
            int y = 0;
            if (i < strings1.length) {
                x = Integer.parseInt(strings1[i]);
            }
            if (i < strings2.length) {
                y = Integer.parseInt(strings2[i]);
            }
            if (x > y) {
                return 1;
            } else if (x < y) {
                return -1;
            }
        }
        return 0;
    }
}
